import pandas as pd
import openpyxl
import win32com.client as win32
import os
import time



current_path = os.getcwd()


if __name__ == '__main__':                                  #要要求他们把输入的数据改成xlsx
    file_path = current_path + "\\圆钻.xlsx"  
    xls = pd.ExcelFile(file_path)  				#读入xlsx文件属性
    sheet_names = xls.sheet_names  
  
    # 将每个sheet转换为DataFrame  
    dfs = {sheet_name: pd.read_excel(file_path, sheet_name=sheet_name) for sheet_name in sheet_names}  
  
    # 将所有DataFrame拼接成一个DataFrame  
    combined_df = pd.concat(dfs.values(), ignore_index=True)  
 
    #df_filtered = combined_df.dropna(subset=['重量']) 		#以克拉数为空删除无用记录

    # 首先，我们将第一行的值设置为新的列名  
    new_columns = combined_df.iloc[0]  
  
    # 然后，我们删除第一行，因为它现在已经是列名了  
    combined_df = combined_df.drop(combined_df.index[0])  
  
    # 最后，我们将新的列名设置给DataFrame  
    combined_df.columns = new_columns
    
    df_filtered = combined_df.dropna(subset=['重量']) 
    df_part = df_filtered[['客户名','重量','石头粒数','单价','单件金额']]

    fill_next = df_part['客户名'].isnull() | (df_part['客户名'] == '') # 初始化一个序列来存储上一行的非空名字
    prev_name = None  # 初始化一个序列来存储上一行的非空名字
    df_reset_index = df_part.reset_index(drop=True) 
    num_rows = len(df_reset_index.index) 
    # 遍历DataFrame的每一行（包括最后一行），并检查是否需要填充名字  
    for index, row in df_reset_index.iloc[:num_rows + 2].iterrows():  #用的索引来标记行的，因此要+2
        if fill_next.iloc[index]:          # 如果当前行的名字为空，则复制上一行的非空名字  
            df_reset_index.at[index, '客户名'] = prev_name  
        else:              # 如果当前行的名字非空，则更新prev_name为当前行的名字  
            prev_name = row['客户名']  
    df_reset_index.columns = ['货单编号', '粒数','重量','单价','金额']  

    #判断并且删除不是数字的行
    output = df_reset_index.reset_index(drop=True)
    not_numbers = output['金额'].apply(lambda x: not isinstance(x, (int, float)))  
  
    # 使用布尔索引来过滤出 '金额' 列是数字的行  
    df_filter22 = output[~not_numbers]  
  
    # 如果想要在原地修改 df  
    output.drop(output[not_numbers].index, inplace=True)  
    output.loc[:, '金额'] = output['金额'] * 1.15
    output.to_excel('取圆钻副石金额.xlsx', index=False)
    output.to_excel('已取圆钻副石金额.xlsx', index=False) 